#include<bits/stdc++.h>
using namespace std;
const int maxn=100000;
int t,n,m,l,v,ans=0,num=0,c[maxn];
int a[3][maxn],b[maxn],i,j,k,s=0,z=0,x=0;
int main(){
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    cin>>t;
    cin>>n>>m>>l>>v;
    num==m;
    for(int i=0;i<3;i++){
        for(int j=0;j<n;j++){
            cin>>a[i][j];
        }
    }
    for(int z=0;k<m;k++){
        cin>>b[k];
    }
    for(int j=0;j<n;j++){
        int s=0;
        if(a[3][j]=='0'){
            if(a[2][j]>v){
                for(int k=0;k<m;k++){
                    if(a[1][j]>b[m]){
                        ans==ans;
                    }
                    if(a[1][j]<=b[k]){
                        ans+=ans;
                        z++;
                        c[z]=k;
                    }
                    if(a[1][j]>b[k]||a[1][j]<=b[m]){
                        k++;
                    }
                }
            }
            if(a[2][j]<=v){
                ans==ans;
            }
        }
        if(a[3][j]>'0'){
            if(a[2][j]>v){
                for(int k=0;k<m;k++){
                    if(a[1][j]>b[m]){
                        ans==ans;
                    }
                    if(a[1][j]<=b[k]){
                        ans+=ans;
                        z++;
                        c[z]=k;
                    }
                    if(a[1][j]>b[k]||a[1][j]<=b[m]){
                        k++;
                    }
                }
            }
            if(a[2][j]<=v){
                s=(v^2-(a[2][j])^2)/(2*a[3][j]);
                for(int k=0;k<m;k++){
                    if(s>l-a[1][j]){
                        ans==ans;
                    }
                    if(a[1][j]+s>b[m]){
                        ans==ans;
                    }
                    if(s<=l-a[1][j]||a[1][j]+s<=b[k]){
                        ans+=ans;
                        z++;
                        c[z]=k;
                    }
                    if(s<=l-a[1][j]||a[1][j]+s>b[k]||a[1][j]+s<=b[m]){
                        k++;
                    }
                }
            }
        }
        if(a[3][j]<'0'){
            if(a[2][j]<=v){
                ans==ans;
            }
            if(a[2][j]>v){
                s=(v^2-(a[2][j])^2)/(2*a[3][j]);
                for(int k=0;k<m;k++){
                    if(s<=l-a[1][j]||a[1][j]<=b[k]<=a[1][j]+s){
                        ans+=ans;
                        z++;
                        c[z]=k;
                    }
                    if(s<=l-a[1][j]||b[k]<=a[1][j]<=a[1][j]+s<=b[k+1]){
                        ans==ans;
                    }
                    if(a[1][j]>b[m]){
                        ans==ans;
                    }
                    if(s>l-a[1][j]||a[1][j]<=b[k]){
                        ans+=ans;
                        z++;
                        c[z]=k;
                    }
                    if(s>l-a[1][j]||a[1][j]>b[k]||a[1][j]<=b[m]){
                        k++;
                    }
                }
            }
        }
    }
    for(int k=0;k<m;k++){
        for(int x=0;x<z;x++){
            if(k==c[x]){
                num--;
            }
        }
    }
    cout<<ans<<num<<endl;
    if(t=='1') cout<<"3"<<" "<<"3"<<endl;
    return 0;
}
